/*
 * Copyright 2016-2017 TVI Go Easy.
 * Created on 2017/4/29 14:27
 */
package org.mechanic.fund.service.product.impl;

import org.mechanic.core.Constants;
import org.mechanic.fund.domain.system.manager.Role;
import org.mechanic.fund.domain.utils.mapper.DtoBeanMapper;
import org.mechanic.fund.repository.system.RoleRepository;
import org.mechanic.fund.service.product.IRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 角色信息服务实现
 *
 * @author mechanic
 * @version 0.0.1
 */
@Service
public class RoleService implements IRoleService {

    private final RoleRepository roleRepository;

    @Autowired
    public RoleService(RoleRepository roleRepository) {this.roleRepository = roleRepository;}

    /**
     * 返回匹配角色编号的角色信息
     *
     * @param id 主键编号
     * @return 角色信息
     */
    @Override
    @Cacheable(value = Constants.EHCACHE_NAME)
    public Role findById(String id) {
        return null;
    }

    /**
     * 返回角色信息分页列表
     *
     * @param pageRequest 分页信息
     * @return 角色信息分页列表
     */
    @Override
    @Cacheable(value = Constants.EHCACHE_NAME)
    public Page<Role> getList(PageRequest pageRequest) {
        return this.roleRepository.findAll(pageRequest);
    }

    /**
     * 返回匹配角色编号的角色信息分页列表
     *
     * @param userId 角色主键编号
     * @param pageRequest  分页信息
     * @return 角色信息分页列表
     */
    @Override
    @Cacheable(value = Constants.EHCACHE_NAME)
    public Page<Role> getList(String userId, PageRequest pageRequest) {
        return this.roleRepository.findAll(pageRequest);
    }

    /**
     * 删除匹配角色编号的角色信息
     *
     * @param id 主键编号
     */
    @Override
    public void delete(String id) {
        this.roleRepository.delete(id);
    }

    /**
     * 保存角色信息
     *
     * @param roles 角色信息集合
     * @param operationUserId 操作该记录的角色主键编号
     */
    @Override
    public void save(List<Role> roles, String operationUserId) {
        //为对象添加创建人创建时间等信息
        this.roleRepository.save(DtoBeanMapper.setOperationToList(roles, operationUserId));
    }
}
